home *** CD-ROM | disk | FTP | other *** search
/ PCMania 73 / PCMania CD73_1.iso / pcmania / render73 / Taller / castli17 / TOWN.INC < prev   
Text File  |  1998-09-14  |  38KB  |  1,162 lines

  1. /* Este fichero es la versión 1.7 de Castlib: una libreria de formas para la
  2.    creación  de  castillos  con  POV  3.0.   La  presente  versión  de  este
  3.    "producto" puede ser utilizada libremente por cualquiera, pero dicho  uso
  4.    implica la aceptación de las siguientes condiciones:
  5.    1) Si alguien emplea alguna de las  estructuras  de  Castlib  1.7  debera
  6.    indicarlo  asi  al  principio  de  su fichero escenico citando tambien el
  7.    nombre de su autor.
  8.    2) Si alguien realiza alguna modificación sobre los ficheros que componen
  9.    Castlib 1.7, debera citar el producto original y su procedencia e indicar
  10.    que lo utilizado es una mutación de Castlib.
  11.    3) Este producto no es shareware sino de PAGO.  Si lo  utilizas  y  algun
  12.    dia, casualmente o no, topas con el autor de Castlib, quedaras obligado a
  13.    invitar a dicho autor a  una caña mientras le explicas como has utilizado
  14.    su producto.
  15.    4)  El  autor  rechaza  cualquier  responsabilidad por cualquier desastre
  16.    informatico, neurologico, o de  cualquier  otro  tipo  que el uso de este
  17.    producto pudiera ocasionar a cualquier ser  pensante  con  una  capacidad
  18.    mental  superior a la de una piedra.  Se entiende asimismo que el usuario
  19.    renuncia a cualquier pretensión de  reclamación, ahora y siempre, en este
  20.    o en cualquier otro universo (paralelo o no), sin excepción  espacial  ni
  21.    temporal, y liberando al autor en parte y en todo de cualquier obligación
  22.    futura.
  23.    5)  La  clausula  4  tambien  se  aplica  a  las entidades integrantes de
  24.    cualquier universo o entorno  virtual  simulado  en cualquier sistema con
  25.    capacidad de procesamiento superior al de un abaco.
  26.    6)  El  uso  de este producto y el incumplimiento de estas clausulas sera
  27.    castigado con medidas judiciales y ostracismo en PCmania. */
  28.  
  29. #include "colors.inc"
  30. #include "woods.inc"
  31. #include "metals.inc"
  32.  
  33. // ---------------------------------------------------
  34. // PANELES CUADRADOS PARA LAS CASAS            
  35. // esta viga basica esta en pos. vertical
  36. //#declare viga=box{<-1,-25,-2>,<1,25,0> texture{T_Wood14 scale<10,10,10>} }
  37. #declare viga=box{<-1,-25,-2>,<1,25,0> texture{T_Wood17 scale<5,5,5>} }
  38. //#declare tejas = texture { T_Wood12 scale<2,2,2>}
  39. #declare tejas = texture { T_Wood14 scale<.25,.25,.25>}
  40. #declare panelb=union{
  41.     box{<-25,0,0>,<25,50,2> 
  42.         texture{texcastle1}}
  43.     object{viga rotate z*90 translate <0,50,0>}
  44.     object{viga rotate z*90 translate <0,2,0>}
  45.     object{viga translate <-25,25,0>}
  46.     object{viga translate <25,25,0>}
  47. }
  48. // dos vigas cruzadas en diagonal
  49. #declare panel1=union{
  50.     object{panelb}
  51.     object{viga scale <1.5,1.33,1> rotate z*45 translate <0,25,-0.2>}
  52.     object{viga scale <1.5,1.33,1> rotate z*-45 translate <0,25,-0.3>}
  53.     }
  54. // una viga en diagonal
  55. #declare panel2=union{
  56.     object{panelb}
  57.     object{viga scale <1.5,1.33,1> rotate z*45 translate <0,25,-0.2>}
  58.     }
  59. // una viga en diagonal
  60. #declare panel3=union{
  61.     object{panelb}
  62.     object{viga scale <1.5,1.33,1> rotate z*-45 translate <0,25,-0.2>}
  63.     }
  64. // dos vigas verticales
  65. #declare panel4=union{
  66.     object{panelb}
  67.     object{viga translate <-10,25,0>}
  68.     object{viga translate <10,25,0>}
  69.     }
  70. //una viga horizontal baja y dos ventanas de tipo 1
  71. #declare panel5=union{
  72.     difference{
  73.         object{panelb}
  74.         object{recven1 translate <-12,25,-1>}
  75.         object{recven1 translate <12,25,-1>}
  76.     }
  77.     object{marcove1 translate <-12,25,3.75> }
  78.     object{marcove1 translate <12,25,3.75> }
  79.     object{viga rotate z*90 translate <0,15,0>}
  80. }
  81. //dos ventanitas cuadradas y una viga horizontal
  82. #declare panel6=union{
  83.     difference{
  84.         object{panelb}
  85.         box{<-5,15,-10>,<5,25,10> translate <-9,0,0>}
  86.         box{<-5,15,-10>,<5,25,10> translate <9,0,0>}
  87.     }
  88.     box{<-4,12,-3>,<4,15,0> translate <-9,0,0> texture{textmur1}}
  89.     box{<-4,12,-3>,<4,15,0> translate <9,0,0> texture{textmur1}}
  90.     object{viga rotate z*90 translate <0,37,0>}
  91.     }
  92. // con puerta
  93. #declare panel7=union{
  94.     difference{
  95.         object{panelb}
  96.         object{recpuer1}
  97.     }
  98.     object{puerta translate<0,0,3>}
  99. }
  100. // con puerta y dos vigas verticales
  101. #declare panel8=union{
  102.     object{panel7}
  103.     object{viga translate <-14,25,0>}
  104.     object{viga translate <14,25,0>}
  105. }
  106. // con puerta y ventanitas tipo 1
  107. #declare panel9=union{
  108.     difference{
  109.         object{panelb}
  110.         object{recpuer1}
  111.         object{recven1 translate <-12,25,-1>}
  112.         object{recven1 translate <12,25,-1>}
  113.     }
  114.     object{puerta translate<0,0,3>}
  115.     object{marcove1 translate <-12,25,3.75>}
  116.     object{marcove1 translate <12,25,3.75>}
  117. }
  118. // con puerta a la izq. y ventanita cuadrada a la der.
  119. #declare panel10=union{
  120.     difference{
  121.         object{panelb}
  122.         object{recpuer1 translate <-14,0,0>}
  123.         box{<-5,30,-10>,<5,40,10> translate <12,0,0>}
  124.     }
  125.     object{puerta translate<-14,0,3>}
  126.     box{<-4,27,-3>,<4,30,0> translate <12,0,0> texture{textmur1}}
  127. }
  128. // con puerta a la izq. y ventanita tipo 1 a la der.
  129. #declare panel11=union{
  130.     difference{
  131.         object{panelb}
  132.         object{recpuer1 translate <-14,0,0>}
  133.         object{recven1 translate <12,25,-1>}
  134.     }
  135.     object{puerta translate<-14,0,3>}
  136.     object{marcove1 translate <12,25,3.75> }
  137. }
  138. // con puerta a la izq., ventanita tipo 1 a la der. y viga diagonal
  139. #declare panel12=union{
  140.     object{panel11}
  141.     object{viga scale <1.5,1.33,1> rotate z*45 translate <0,25,-0.2>}
  142. }    
  143. //dos ventanitas tipo 1 a la altura del 1er piso
  144. #declare panel13=union{
  145.     difference{
  146.         object{panelb}
  147.         object{recven1 translate <-12,25,-1>}
  148.         object{recven1 translate <12,25,-1>}
  149.     }
  150.     object{marcove1 translate <-12,25,3.75> }
  151.     object{marcove1 translate <12,25,3.75> }
  152. }
  153. // dos vigas verticales
  154. #declare panel14=union{
  155.     difference{
  156.         object{panelb}
  157.         object{recven1 translate <0,25,-1>}
  158.     }
  159.     object{marcove1 translate <0,25,3.75> }
  160.     object{viga translate <-14,25,0>}
  161.     object{viga translate <14,25,0>}
  162. }
  163.  
  164.  
  165.  
  166. // ---------------------------------------------------
  167. // PANELES DIAGONALES PARA LOS TEJADOS DE LAS CASAS
  168. // con vigas diagonales
  169. #declare rectej45=union{
  170.     plane{y,0 inverse translate<25,0,0> rotate z*63 translate<-25,0,0> }
  171.     plane{y,0 inverse translate<25,0,0> rotate z*63 translate<-25,0,0> rotate y*180}
  172. }
  173. #declare paneld1=difference{
  174.     union{
  175.         box{<-25,0,0>,<25,50,2>}
  176.         object{viga translate<0,25,0>}
  177.         object{viga scale <1.5,1.33,1> rotate z*45 translate <-25,25,-0.2>}
  178.         object{viga scale <1.5,1.33,1> rotate z*-45 translate <25,25,-0.3>}
  179. //        pigment{ image_map{tga "piedra2.tga" }
  180. //                 translate <-.5,-.5,0> scale <14,14,1> }
  181.         texture{texcastle1}
  182.         }
  183.     object{rectej45}
  184. }
  185. // con ventana de tipo 1
  186. #declare paneld2=union{
  187.     difference{
  188.         box{<-25,0,0>,<25,50,2>}
  189.         object{rectej45}
  190.         object{recven1 translate <0,12,-1>}
  191. //        pigment{ image_map{tga "piedra2.tga" }
  192. //                 translate <-.5,-.5,0> scale <14,14,1> }
  193.         texture{texcastle1}
  194.         }    
  195.     object{marcove1 translate <0,12,3.75> }
  196. }
  197. // con puerta (habra escaleras)
  198. #declare paneld3=union{
  199.     difference{
  200.         box{<-25,0,0>,<25,50,2>}
  201.         object{rectej45}
  202.         object{recpuer1}
  203. //        pigment{ image_map{tga "piedra2.tga" }
  204. //                 translate <-.5,-.5,0> scale <14,14,1> }
  205.         texture{texcastle1}
  206.         }    
  207.     object{puerta translate<0,0,3>}
  208. }
  209. // panel diag. para lado izq.
  210. #declare paneld4=difference{
  211.     object{panel2}
  212.     plane{y,0 inverse rotate z*45 translate <-25,0,0>}
  213. }
  214. // panel diag. para lado der.
  215. #declare paneld5=difference{
  216.     object{panel3}
  217.     plane{y,0 inverse rotate z*45 translate <-25,0,0> rotate y*180}
  218. }
  219. // panel doble ( 4+5 ) con ventana central (desde -50X a +50X)
  220. #declare paneld6=union{
  221.     difference{
  222.         union{
  223.             object{paneld4 translate <-25,0,0>}
  224.             object{paneld5 translate <25,0,0>}
  225.             }
  226.         object{recven1 translate <0,15,-1>}
  227.         }
  228.     object{marcove1 translate <0,15,3.75> }
  229. }
  230.  
  231.  
  232.  
  233. // ---------------------------------------------------
  234. // MACROS DE BUHARDILLAS Y TEJADOS DE LAS CASAS
  235.  
  236. #declare irectej1=difference{box{<-32,0,-31>,<33,50,31>
  237.     translate<25,0,0> rotate z*63 translate<-25,0,0> }
  238.     plane{y,51 inverse}
  239.     texture{tejas}
  240. }
  241. #declare rectej1=union{
  242.     object{irectej1}
  243.     object{irectej1 rotate y*180}
  244. #declare mtej1=difference{
  245.     object{irectej1}
  246.     box{<-40,0,-40>,<40,60,40> translate<25,0,0> rotate z*63 translate<-28,0,0>}
  247. }
  248. // tejado para "casas" de 5 metros de ancho
  249. #declare tejado1=union{
  250.     object{mtej1}
  251.     object{mtej1 rotate y*180}
  252.     texture{tejas}
  253. }    
  254. // tejado de 45 grados
  255. #declare irectej2=difference{box{<-41,0,-31>,<50,50,31>
  256.     rotate z*45 translate<0,25,0>}
  257.     plane{y,51 inverse}
  258.     texture{tejas}
  259. }
  260. #declare rectej2=union{
  261.     object{irectej2}
  262.     object{irectej2 rotate y*180}
  263. }
  264. // tejado para partes adosadas
  265. #declare mtej2=difference{
  266.     object{irectej2}
  267.     box{<-50,0,-40>,<60,60,40> rotate z*45 translate<-3,25,0> }
  268.     texture{tejas}
  269. }
  270.  
  271.  
  272. // BUHARDILLAS
  273. // panel superior de buhardillas
  274. declare pansupbu=difference{
  275.     box{<-25,0,0>,<25,50,5>}
  276.     object{rectej45}
  277.     texture{textmur1}
  278.     }    
  279. #declare cachob1=union{
  280.     object{panelb translate<0,-50,-25>}
  281.     object{panelb translate<0,-50,-25> rotate y*90}
  282.     object{panelb translate<0,-50,-25> rotate y*180}
  283.     object{panelb translate<0,-50,-25> rotate y*270}
  284. // parte superior
  285.     object{pansupbu translate<0,0,-25>}
  286.     object{pansupbu translate<0,0,-25> rotate y*180}
  287.     object{tejado1 texture { T_Wood18 scale<.2,.2,.2>}}
  288. }
  289. #declare buhardilla1=union{
  290.     difference{    
  291.         object{cachob1 scale <.3,.3,.3> translate<0,15,0>}
  292.         object{recven1 translate <0,3,-4>}
  293.         }
  294.     object{cachob1 scale <.3,.3,.3> translate<0,15,15>}
  295.     object{marcove1 translate <0,3,-4> }
  296. }                                
  297.  
  298. #declare buhardilla2=union{
  299.     difference{    
  300.         object{cachob1 scale <.35,.3,.3> translate<0,15,0>}
  301.         object{recven1 translate <0,3,-8>}
  302.         }
  303.     object{cachob1 scale <.3,.3,.3> translate<0,15,15>}
  304.     object{marcove1 translate <0,3,-4> }
  305. }                                
  306.  
  307.  
  308. #declare buhar3_1=union{
  309.     object{buhardilla1 translate<-50,0,0>}
  310.     object{buhardilla1 }
  311.     object{buhardilla1 translate<50,0,0>}
  312. }
  313. #declare buhar3_2=union{
  314.     object{buhardilla1 translate<-50,0,0>}
  315.     object{buhardilla2 }
  316.     object{buhardilla1 translate<50,0,0>}
  317. }
  318. // TEJADOS de 15 metros de largo con y sin buhardillas
  319. #declare tejado31=union{   
  320.     object{tejado1 rotate y*90 translate<-50,0,0>}
  321.     object{tejado1 rotate y*90 translate<0,0,0>}
  322.     object{tejado1 rotate y*90 translate<50,0,0>}
  323. }
  324. #declare tejado32=union{
  325.     object{tejado31}
  326.     object{buhar3_1 translate<0,10,-16.5>}
  327.     object{buhar3_1 translate<0,10,-16.5> rotate y*180}
  328. }
  329. #declare tejado33=union{
  330.     object{tejado31}
  331.     object{buhar3_2 translate<0,10,-16.5>}
  332.     object{buhar3_2 translate<0,10,-16.5> rotate y*180}
  333. }
  334.  
  335.  
  336.  
  337. // ---------------------------------------------------
  338. //ESCALERAS
  339. /*  Este  tramo  de escaleras se usa para alcanzar las puertas colocadas a 5
  340.    metros de altura (de las casas).  Sube  de der.  a izq., Tiene 1.5 metros
  341.    de ancho y 5 metros de largo.  Consta de 25 peldaños */
  342. #declare escal5m= union{
  343.     #declare pel=0
  344.     #declare alt=50
  345.     #declare xpel=-5
  346.     #while (pel!=20)
  347. //        box{<-25,alt-2.5,-15>,<xpel,alt,0>}
  348.         box{<-25,alt-2.5,-7.5>,<xpel,alt,7.5>}
  349.         #declare alt=alt-2.5
  350.         #declare pel=pel+1
  351.         #declare xpel=xpel+2.5
  352.     #end    
  353. //    pigment{image_map{tga "piedra22.tga" map_type 0} scale <14,14,1>}
  354. }
  355.  
  356. #declare escal5=merge{
  357.     difference{
  358.         object{escal5m}
  359.         box{<-26,-1,-7.49>,<xpel,51,7.49>}
  360.         pigment{Orange}
  361. //        pigment{image_map{tga "piedra22.tga" map_type 0} scale <14,14,1>}
  362.         }
  363.     intersection{
  364.         object{escal5m}
  365.         box{<-26,-1,-7.49>,<xpel,51,7.49>}
  366.         pigment{Orange}
  367. //        pigment{image_map{tga "piedra22.tga" map_type 0} scale <14,14,1>
  368. //                rotate x*90}
  369.         }
  370.     translate<0,0,-7.5>
  371. }
  372.  
  373. //la misma escalera con puerta
  374. #declare escal51=union{
  375.     difference{
  376.         object{escal5}
  377.         object{recpuer1 translate<-12,0,-12>}
  378.         }        
  379.     object{puerta translate<-12,0,-12>}
  380. }
  381. //idem. con arco (en esquinas)
  382. #declare escal52=union{
  383.     difference{
  384.         object{escal5}
  385.         object{recpuer1 translate<0,-10,0> scale <1.3,2.5,5>
  386.                         translate<-14,10,-12>}
  387.         object{recpuer1 translate<0,-10,0> scale <1.3,2.5,1> rotate y*90
  388.                         translate<-22,10,-4>}
  389.         }        
  390.     object{marcopu translate<0,-10,0> scale <1.3,2.5,.5> translate<-14,10,-14>}
  391.     difference{
  392.         object{marcopu translate<0,-10,0> scale <1.3,2.5,.5> rotate y*90
  393.                        translate<-24,10,-4>}
  394.         plane{z,0 inverse texture{textmur1} }
  395.         }
  396. }
  397.  
  398.  
  399.  
  400. // ---------------------------------------------------
  401. /* CASAS 5*10*10 (5 de ancho, 10 largo, 10 alto), simples (sin buhardillas,
  402.    puentes ni escaleras). Las casas se colocaran siempre con las puertas
  403.    paralelas al eje X (la calle) */
  404. #declare macb1=union{
  405.     object{panel9 translate<-25,0,-25>}   
  406.     object{panel5 translate<25,0,-25>}   
  407.     object{panel4 rotate y*90 translate<-50,0,0>}
  408. }
  409. #declare planta1=union{
  410.     object{macb1}       
  411.     object{macb1 rotate y*180}
  412. }
  413. #declare casa1=union{
  414.     object{planta1}       
  415.     object{paneld1 rotate y*90 translate<-50,50,0>}
  416.     object{paneld1 rotate y*90 translate<-50,50,0> rotate y*180}
  417.     object{tejado1 rotate y*90 translate<-25,50,0>}
  418.     object{tejado1 rotate y*90 translate<25,50,0>}
  419. }
  420. #declare macb2=union{
  421.     object{panel8 translate<-25,0,-25>}   
  422.     object{panel13 translate<25,0,-25>}   
  423.     object{panel14 rotate y*90 translate<-50,0,0>}
  424. }
  425. #declare planta2=union{
  426.     object{macb2}       
  427.     object{macb2 rotate y*180}
  428. }
  429. #declare casa2=union{
  430.     object{planta2}       
  431.     object{paneld1 rotate y*90 translate<-50,50,0>}
  432.     object{paneld1 rotate y*90 translate<-50,50,0> rotate y*180}
  433.     object{tejado1 rotate y*90 translate<-25,50,0>}
  434.     object{tejado1 rotate y*90 translate<25,50,0>}
  435. }
  436.  
  437. #declare macb3=union{
  438.     object{panel6 translate<-25,0,-25>}   
  439.     object{panel10 translate<25,0,-25>}   
  440.     object{panel2 rotate y*90 translate<-50,0,0>}
  441.     object{paneld1 rotate y*90 translate<-50,50,0>}
  442. }
  443. // Esta casa se colocara siguiendo el eje X (la calle)
  444. #declare casa3=union{
  445.     object{macb3}       
  446.     object{macb3 rotate y*180}
  447.     object{tejado1 rotate y*90 translate<-25,50,0>}
  448.     object{tejado1 rotate y*90 translate<25,50,0>}
  449. }
  450. #declare macb4=union{
  451.     object{panel5 translate<-25,0,-25>}   
  452.     object{panel12 translate<25,0,-25>}   
  453.     object{panel3 rotate y*90 translate<-50,0,0>}
  454.     object{paneld2 rotate y*90 translate<-50,50,0>}
  455. }
  456. #declare casa4=union{
  457.     object{macb4}       
  458.     object{macb4 rotate y*180}
  459.     object{tejado1 rotate y*90 translate<-25,50,0>}
  460.     object{tejado1 rotate y*90 translate<25,50,0>}
  461. }
  462. #declare macb5=union{
  463.     object{panel3 translate<-25,0,-25>}   
  464.     object{panel8 translate<25,0,-25>}   
  465.     object{panel1 rotate y*90 translate<-50,0,0>}
  466.     object{paneld1 rotate y*90 translate<-50,50,0>}
  467. }
  468. #declare casa5=union{
  469.     object{macb5}       
  470.     object{macb5 rotate y*180}
  471.     object{tejado1 rotate y*90 translate<-25,50,0>}
  472.     object{tejado1 rotate y*90 translate<25,50,0>}
  473. }
  474. // siguen las mismas 5 casas precedentes, pero con buhardillas
  475. #declare buh4=union{    // macro para casas con buhardilla
  476.     object{buhardilla1 translate<-25,60,-18>}
  477.     object{buhardilla1 translate<25,60,-18>}
  478.     object{buhardilla1 translate<-25,60,-18> rotate y*180}
  479.     object{buhardilla1 translate<25,60,-18> rotate y*180}
  480. }
  481. #declare casa1b=union{
  482.     object{casa1}
  483.     object{buh4}
  484. }
  485. #declare casa2b=union{
  486.     object{casa2}
  487.     object{buh4}
  488. }
  489. #declare casa3b=union{
  490.     object{casa3}
  491.     object{buh4}
  492. }
  493. #declare casa4b=union{
  494.     object{casa4}
  495.     object{buh4}
  496. }
  497. #declare casa5b=union{
  498.     object{casa5}
  499.     object{buh4}
  500. }
  501.  
  502. #declare macb6=union{
  503.     object{panel5 translate<-25,0,-25>}   
  504.     object{panel5 translate<25,0,-25>}   
  505.     object{panel9 rotate y*90 translate<-50,0,0>}
  506. }
  507. #declare planta3=union{
  508.     object{macb6}       
  509.     object{macb6 rotate y*180}
  510. }
  511. #declare casa6=union{
  512.     object{planta3}       
  513.     object{paneld1 rotate y*90 translate<-50,50,0>}
  514.     object{paneld1 rotate y*90 translate<-50,50,0> rotate y*180}
  515.     object{tejado1 rotate y*90 translate<-25,50,0>}
  516.     object{tejado1 rotate y*90 translate<25,50,0>}
  517.     rotate y*90
  518. }
  519. #declare macb7=union{
  520.     object{panel13 translate<-25,0,-25>}   
  521.     object{panel14 translate<25,0,-25>}   
  522.     object{panel8 rotate y*90 translate<-50,0,0>}
  523.     object{paneld2 rotate y*90 translate<-50,50,0>}
  524. }
  525. #declare casa7=union{
  526.     object{macb7}       
  527.     object{macb7 rotate y*180}
  528.     object{tejado1 rotate y*90 translate<-25,50,0>}
  529.     object{tejado1 rotate y*90 translate<25,50,0>}
  530.     rotate y*90
  531. }
  532. #declare macb8=union{
  533.     object{panel3 translate<-25,0,-25>}   
  534.     object{panel4 translate<25,0,-25>}   
  535.     object{panel12 rotate y*90 translate<-50,0,0>}
  536.     object{paneld2 rotate y*90 translate<-50,50,0>}
  537. }
  538. #declare casa8=union{
  539.     object{macb8}       
  540.     object{macb8 rotate y*180}
  541.     object{tejado1 rotate y*90 translate<-25,50,0>}
  542.     object{tejado1 rotate y*90 translate<25,50,0>}
  543.     rotate y*90
  544. }
  545. #declare macb9=union{
  546.     object{panel14 translate<-25,0,-25>}   
  547.     object{panel14 translate<25,0,-25>}   
  548.     object{panel11 rotate y*90 translate<-50,0,0>}
  549.     object{paneld1 rotate y*90 translate<-50,50,0>}
  550. }
  551. #declare casa9=union{
  552.     object{macb9}       
  553.     object{macb9 rotate y*180}
  554.     object{tejado1 rotate y*90 translate<-25,50,0>}
  555.     object{tejado1 rotate y*90 translate<25,50,0>}
  556.     rotate y*90
  557. }
  558. #declare macb10=union{
  559.     object{panel5 translate<-25,0,-25>}   
  560.     object{panel2 translate<25,0,-25>}   
  561.     object{panel7 rotate y*90 translate<-50,0,0>}
  562.     object{paneld2 rotate y*90 translate<-50,50,0>}
  563. }
  564. #declare casa10=union{
  565.     object{macb10}       
  566.     object{macb10 rotate y*180}
  567.     object{tejado1 rotate y*90 translate<-25,50,0>}
  568.     object{tejado1 rotate y*90 translate<25,50,0>}
  569.     rotate y*90
  570. }
  571.  
  572. #declare casa6b=union{
  573.     object{casa6}
  574.     object{buh4 rotate y*90}
  575. }
  576. #declare casa7b=union{
  577.     object{casa7}
  578.     object{buh4 rotate y*90}
  579. }
  580. #declare casa8b=union{
  581.     object{casa8}
  582.     object{buh4 rotate y*90}
  583. }
  584. #declare casa9b=union{
  585.     object{casa9}
  586.     object{buh4 rotate y*90}
  587. }
  588. #declare casa10b=union{
  589.     object{casa10}
  590.     object{buh4 rotate y*90}
  591. }
  592.  
  593.  
  594.  
  595. // ---------------------------------------------------
  596. // ahora, usando las "plantas", crear ESTRUCTURAS LATERALES y COLGANTES
  597. #declare macb11=union{
  598.     object{panel14 translate<-25,0,-25>}   
  599.     object{panel14 translate<25,0,-25>}   
  600.     object{panel14 rotate y*90 translate<-50,0,0>}
  601. }
  602. #declare planta4=union{
  603.     object{macb11}
  604.     object{macb11 rotate y*180}
  605. }
  606. #declare macb12=union{
  607.     object{panel5 translate<-25,0,-25>}   
  608.     object{panel5 translate<25,0,-25>}   
  609.     object{panel5 rotate y*90 translate<-50,0,0>}
  610. }
  611. #declare planta5=union{
  612.     object{macb12}
  613.     object{macb12 rotate y*180}
  614. }
  615. #declare macb13=union{
  616.     object{panel1 translate<-25,0,-25>}   
  617.     object{panel1 translate<25,0,-25>}   
  618.     object{panel1 rotate y*90 translate<-50,0,0>}
  619. }
  620. #declare planta6=union{
  621.     object{macb13}
  622.     object{macb13 rotate y*180}
  623. }
  624. #declare tejlat0=union{
  625.     object{mtej2 rotate y*90 translate <0,0,0>}
  626.     object{paneld4 rotate y*90 translate<-25,0,0>}   
  627.     object{paneld5 rotate y*-90 translate<25,0,0>}
  628. }
  629. #declare tejlat1=union{
  630.     object{mtej2 rotate y*90 translate <-25,0,0>}
  631.     object{mtej2 rotate y*90 translate <25,0,0>}
  632.     object{paneld4 rotate y*90 translate<-50,0,0>}   
  633.     object{paneld5 rotate y*-90 translate<50,0,0>}
  634. }
  635. // laterales de 2 pisos con escalera
  636. #declare lateral1_2=union{
  637.     object{escal5 translate<70,0,7.5> rotate y*180}
  638.     object{planta1 rotate y*180}
  639.     object{planta3 translate <0,50,0>}
  640.     object{tejlat1 translate<0,100,0>}
  641.     rotate y*180
  642. }    
  643. #declare lateral2_2=union{
  644.     object{escal52 translate<70,0,7.5> rotate y*180}
  645.     object{planta6 rotate y*180}
  646.     object{planta3 translate <0,50,0>}
  647.     object{tejlat1 translate<0,100,0>}
  648.     rotate y*180
  649. }    
  650. //laterales de 2 pisos sin escalera
  651. #declare lateral3_2=union{
  652.     object{planta2}
  653.     object{planta4 translate <0,50,0>}
  654.     object{tejlat1 translate<0,100,0>}    
  655. }    
  656. #declare lateral4_2=union{
  657.     object{planta3}
  658.     object{planta5 translate <0,50,0>}
  659.     object{tejlat1 translate<0,100,0>}    
  660. }    
  661. //laterales de un piso, sin puerta y 10 metros de largo
  662. #declare lateral1_1=union{
  663.     object{planta4}
  664.     object{tejlat1 translate<0,50,0> }
  665.     rotate y*180
  666. }
  667. #declare lateral2_1=union{
  668.     object{planta5}
  669.     object{tejlat1 translate<0,50,0>}
  670.     rotate y*180
  671. }
  672. // laterales de un piso y 5 metros de largo
  673. #declare lateral3_1=union{
  674.     object{panel14 translate<0,0,-25>}   
  675.     object{panel1 rotate y*90 translate<-25,0,0>}
  676.     object{panel1 rotate y*-90 translate<25,0,0>}
  677.     object{tejlat0 scale <0,.50,0> translate<0,51,0> rotate y*180}
  678. }    
  679. #declare lateral4_1=union{
  680.     object{panel5 translate<0,0,-25>}   
  681.     object{panel1 rotate y*90 translate<-25,0,0>}
  682.     object{panel1 rotate y*-90 translate<25,0,0>}
  683.     object{tejlat0 scale <0,.50,0> translate<0,51,0> rotate y*180}
  684. }    
  685. /*estructuras colgantes para casa grandes y torres. Son, ejem, las dos de
  686.   arriba mas el soporte */
  687. #declare colgante1=union{
  688.     object{lateral3_1 translate<0,60,0>}
  689.     object{soporte1 translate <0,0,-6.5> scale <1,1,1.7> translate <0,0,29>}
  690. }    
  691. #declare colgante2=union{
  692.     object{lateral4_1 translate<0,60,0>}
  693.     object{soporte1 translate <0,0,-6.5> scale <1,1,1.7> translate <0,0,29>}
  694. }    
  695. #declare colgante3=union{
  696.     object{colgante1 translate<-25,0,0>}
  697.     object{colgante1 translate<25,0,0>}
  698.     object{soporte1 translate <0,0,-6.5> scale <1,1,1.7> translate <-25,0,29>}
  699.     object{soporte1 translate <0,0,-6.5> scale <1,1,1.7> translate <25,0,29>}
  700. }    
  701. #declare colgante4=union{
  702.     object{colgante2 translate<-25,0,0>}
  703.     object{colgante2 translate<25,0,0>}
  704.     object{soporte1 translate <0,0,-6.5> scale <1,1,1.7> translate <-25,0,29>}
  705.     object{soporte1 translate <0,0,-6.5> scale <1,1,1.7> translate <25,0,29>}
  706. }    
  707.  
  708. // ---------------------------------------------------
  709. /* CASAS 5*15*15 (5 de ancho, 15 largo, 15 alto), con buhardillas y posibles
  710.    puentes y escaleras. Primero definimos los "pisos" y luego las casas */
  711. #declare mpiso1b=union{
  712.     object{panel9 rotate y*90 translate<-75,0,0>}
  713.     object{panel5 translate<-50,0,-25>}   
  714.     object{panel1 translate<0,0,-25>}   
  715.     object{panel5 translate<50,0,-25>}
  716. }
  717. #declare piso1b=union{
  718.     object{mpiso1b}       
  719.     object{mpiso1b rotate y*180}
  720. }
  721. #declare mpiso1m=union{
  722.     object{panel5 rotate y*90 translate<-75,0,0>}
  723.     object{panel4 translate<-50,0,-25>}   
  724.     object{panel1 translate<0,0,-25>}   
  725.     object{panel4 translate<50,0,-25>}
  726. }
  727. #declare piso1m=union{
  728.     object{mpiso1m}       
  729.     object{mpiso1m rotate y*180}
  730. }
  731. #declare casa21=union{
  732.     object{piso1b}
  733.     object{piso1m translate <0,50,0>}
  734.     object{tejado32 translate<0,100,0>}
  735.     object{paneld1 rotate y*90 translate<-75,100,0>}
  736.     object{paneld1 rotate y*-90 translate<75,100,0>}
  737. }
  738. #declare casa21a=union{
  739.     object{casa21}
  740.     object {lateral1_1 translate <-25,0,-50>}
  741. }
  742.  
  743. #declare mpiso2b=union{
  744.     object{panel8 rotate y*90 translate<-75,0,0>}
  745.     object{panel13 translate<-50,0,-25>}   
  746.     object{panel7 translate<0,0,-25>}   
  747.     object{panel13 translate<50,0,-25>}
  748. }
  749. #declare piso2b=union{
  750.     object{mpiso2b}       
  751.     object{mpiso2b rotate y*180}
  752. }
  753. #declare mpiso2m=union{
  754.     object{panel14 rotate y*90 translate<-75,0,0>}
  755.     object{panel3 translate<-50,0,-25>}   
  756.     object{panel1 translate<0,0,-25>}   
  757.     object{panel3 translate<50,0,-25>}
  758. }
  759. #declare piso2m=union{
  760.     object{mpiso2m}       
  761.     object{mpiso2m rotate y*180}
  762. }
  763. #declare casa22=union{
  764.     object{piso2b}
  765.     object{piso2m translate <0,50,0>}
  766.     object{tejado33 translate<0,100,0>}
  767.     object{paneld1 rotate y*90 translate<-75,100,0>}
  768.     object{paneld1 rotate y*-90 translate<75,100,0>}
  769. }
  770.  
  771. #declare mpiso3b=union{
  772.     object{panel12 rotate y*90 translate<-75,0,0>}
  773.     object{panel5 translate<-50,0,-25>}   
  774.     object{panel2 translate<0,0,-25>}   
  775.     object{panel5 translate<50,0,-25>}
  776. }
  777. #declare piso3b=union{
  778.     object{mpiso3b}       
  779.     object{mpiso3b rotate y*180}
  780. }
  781. #declare mpiso3m=union{
  782.     object{panel1 rotate y*90 translate<-75,0,0>}
  783.     object{panel2 translate<-50,0,-25>}   
  784.     object{panel11 translate<0,0,-25>}   
  785.     object{panel2 translate<50,0,-25>}
  786. }
  787. #declare piso3m=union{
  788.     object{mpiso3m}       
  789.     object{mpiso3m rotate y*180}
  790. }
  791. #declare casa23=union{
  792.     object{piso3b}
  793.     object{piso3m translate <0,50,0>}
  794.     object{escal51 translate<0,0,-25>}
  795.     object{escal51 translate<0,0,-25> rotate y*180}
  796.     object{tejado32 translate<0,100,0>}
  797.     object{paneld2 rotate y*90 translate<-75,100,0>}
  798.     object{paneld2 rotate y*-90 translate<75,100,0>}
  799. }
  800.  
  801. #declare mpiso4b=union{
  802.     object{panel12 rotate y*90 translate<-75,0,0>}
  803.     object{panel1 translate<-50,0,-25>}   
  804.     object{panel1 translate<0,0,-25>}   
  805.     object{panel9 translate<50,0,-25>}
  806. }
  807. #declare piso4b=union{
  808.     object{mpiso4b}       
  809.     object{mpiso4b rotate y*180}
  810. }
  811. #declare mpiso4m=union{
  812.     object{panel1 rotate y*90 translate<-75,0,0>}
  813.     object{panel5 translate<-50,0,-25>}   
  814.     object{panelb translate<0,0,-25>}   
  815.     object{panel5 translate<50,0,-25>}
  816. }
  817. #declare piso4m=union{
  818.     object{mpiso4m}       
  819.     object{mpiso4m rotate y*180}
  820. }
  821. #declare casa24=union{
  822.     object{piso4b}
  823.     object{piso4m translate <0,50,0>}
  824.     object{tejado31 translate <0,100,0>}
  825.     object{paneld1 rotate y*90 translate<-75,100,0>}
  826.     object{paneld1 rotate y*-90 translate<75,100,0>}
  827. }
  828. #declare casa24a=union{
  829.     object{casa24}
  830.     object {lateral2_1 translate <25,0,-50>}
  831. }
  832.  
  833. #declare mpiso5b=union{
  834.     object{panel8 rotate y*90 translate<-75,0,0>}
  835.     object{panelb translate<-50,0,-25>}   
  836.     object{panel3 translate<0,0,-25>}   
  837.     object{panel5 translate<50,0,-25>}
  838. }
  839. #declare piso5b=union{
  840.     object{mpiso5b}       
  841.     object{mpiso5b rotate y*180}
  842. }
  843. #declare mpiso5m=union{
  844.     object{panel5 rotate y*90 translate<-75,0,0>}
  845.     object{panel12 translate<-50,0,-25>}   
  846.     object{panel1 translate<0,0,-25>}   
  847.     object{panel4 translate<50,0,-25>}
  848. }
  849. #declare piso5m=union{
  850.     object{mpiso5m}       
  851.     object{mpiso5m rotate y*180}
  852. }
  853. #declare casa25=union{
  854.     object{piso5b}
  855.     object{piso5m translate <0,50,0>}
  856.     object{escal52 translate<-50,0,-25>}
  857.     object{escal52 translate<-50,0,-25> rotate y*180}
  858.     object{tejado33 translate<0,100,0>}
  859.     object{paneld2 rotate y*90 translate<-75,100,0>}
  860.     object{paneld2 rotate y*-90 translate<75,100,0>}
  861. }
  862.  
  863.  
  864.  
  865. // ---------------------------------------------------
  866. /* CASAS 10*15*15  (10  de  ancho,  20  largo,  15  alto), con buhardillas y
  867.    posibles puentes y escaleras.  Definiremos tiras de  2  y  4  paneles  de
  868.    largo y, con ellas, crearemos los "pisos" */
  869. // 9 tiras de 2 paneles de largo
  870. #declare tira1_a=union{
  871.     object{panel1 translate<-25,0,0>}
  872.     object{panel1 translate<25,0,0>}
  873. }
  874. #declare tira2_a=union{
  875.     object{panel14 translate<-25,0,0>}
  876.     object{panel1 translate<25,0,0>}
  877. }
  878. #declare tira3_a=union{
  879.     object{panel12 translate<-25,0,0>}
  880.     object{panel2 translate<25,0,0>}
  881. }
  882. #declare tira4_a=union{
  883.     object{panel5 translate<-25,0,0>}
  884.     object{panel4 translate<25,0,0>}
  885. }
  886. #declare tira5_a=union{
  887.     object{panel2 translate<-25,0,0>}
  888.     object{panel3 translate<25,0,0>}
  889. }
  890. #declare tira6_a=union{
  891.     object{panel13 translate<-25,0,0>}
  892.     object{panel8 translate<25,0,0>}
  893. }
  894. #declare tira7_a=union{
  895.     object{panel5 translate<-25,0,0>}
  896.     object{panel5 translate<25,0,0>}
  897. }
  898. #declare tira8_a=union{
  899.     object{panel11 translate<-25,0,0>}
  900.     object{panel5 translate<25,0,0>}
  901. }
  902. #declare tira9_a=union{
  903.     object{panel1 translate<-25,0,0>}
  904.     object{panel4 translate<25,0,0>}
  905. }
  906. // 7 tiras de 4 paneles de largo
  907. #declare tira1_b=union{
  908.     object{tira3_a translate<-50,0,0>}
  909.     object{tira4_a translate<50,0,0>}
  910. }
  911. #declare tira2_b=union{
  912.     object{tira1_a translate<-50,0,0>}
  913.     object{tira1_a translate<50,0,0>}
  914. }
  915. #declare tira3_b=union{
  916.     object{tira2_a translate<-50,0,0>}
  917.     object{tira2_a translate<50,0,0>}
  918. }
  919. #declare tira4_b=union{
  920.     object{tira5_a translate<-50,0,0>}
  921.     object{tira6_a translate<50,0,0>}
  922. }
  923. #declare tira5_b=union{
  924.     object{tira7_a translate<-50,0,0>}
  925.     object{tira7_a translate<50,0,0>}
  926. }
  927. #declare tira6_b=union{
  928.     object{tira5_a translate<-50,0,0>}
  929.     object{tira8_a translate<50,0,0>}
  930. }
  931. #declare tira7_b=union{
  932.     object{tira9_a translate<-50,0,0>}
  933.     object{tira9_a translate<50,0,0>}
  934. }
  935. //ahora 6 plantas (la b=es base y la m=planta media)
  936. #declare floor1=union{
  937.     object{tira1_b translate<0,0,-50>}
  938.     object{tira7_a translate<0,0,-100> rotate y*90}
  939.     object{tira5_b translate<0,0,-50> rotate y*180}
  940.     object{tira7_a translate<0,0,-100> rotate y*270}
  941. }
  942. #declare floor2=union{
  943.     object{tira7_b translate<0,0,-50>}
  944.     object{tira9_a translate<0,0,-100> rotate y*90}
  945.     object{tira7_b translate<0,0,-50> rotate y*180}
  946.     object{tira9_a translate<0,0,-100> rotate y*270}
  947. }
  948. #declare floor3=union{
  949.     object{tira6_b translate<0,0,-50>}
  950.     object{tira1_a translate<0,0,-100> rotate y*90}
  951.     object{tira1_b translate<0,0,-50> rotate y*180}
  952.     object{tira7_a translate<0,0,-100> rotate y*270}
  953. }
  954. #declare floor4=union{
  955.     object{tira1_b translate<0,0,-50>}
  956.     object{tira9_a translate<0,0,-100> rotate y*90}
  957.     object{tira5_b translate<0,0,-50> rotate y*180}
  958.     object{tira9_a translate<0,0,-100> rotate y*270}
  959. }
  960. #declare floor5=union{
  961.     object{tira5_b translate<0,0,-50>}
  962.     object{tira7_a translate<0,0,-100> rotate y*90}
  963.     object{tira3_b translate<0,0,-50> rotate y*180}
  964.     object{tira1_a translate<0,0,-100> rotate y*270}
  965. }
  966. #declare floor6=union{
  967.     object{tira4_b translate<0,0,-50>}
  968.     object{tira3_a translate<0,0,-100> rotate y*90}
  969.     object{tira7_b translate<0,0,-50> rotate y*180}
  970.     object{tira1_a translate<0,0,-100> rotate y*270}
  971. }
  972. // el tejado para estos edificios    
  973. // tejado para "casas" de mas de 5 metros de ancho
  974. #declare tejado2=union{
  975.     object{mtej2 rotate y*-90 translate <0,0,-25>}
  976.     object{mtej2 rotate y*-90 translate <0,0,-25> rotate y*180}
  977.     texture{tejas}
  978. }    
  979. #declare pantej1=union{
  980.     object{paneld4 rotate y*90 translate <-100,0,25>}
  981.     object{paneld5 rotate y*90 translate <-100,0,-25>}
  982.     union{
  983.         object{paneld4 rotate y*90 translate <-100,0,25>}
  984.         object{paneld5 rotate y*90 translate <-100,0,-25>}
  985.         rotate y*180
  986.         }
  987. }
  988. #declare pantej2=union{
  989.     object{paneld6 rotate y*90 translate <-100,0,0>}
  990.     object{paneld6 rotate y*-90 translate <100,0,0>}
  991. }
  992. #declare tejado41=union{   
  993.     object{tejado2 translate<-75,0,0>}
  994.     object{tejado2 translate<-25,0,0>}
  995.     object{tejado2 translate<25,0,0>}
  996.     object{tejado2 translate<75,0,0>}
  997.     object{pantej2}
  998. }
  999. #declare tejado42=union{
  1000.     object{tejado41}
  1001.     object{buhar3_1 translate <0,8,-38>}
  1002.     object{buhar3_1 translate <0,8,-38> rotate y*180}
  1003. }
  1004.  
  1005. //casa simple de 1 piso y 10*20 metros
  1006. #declare casa31=union{
  1007. object {floor6 }
  1008. object {tejado42 translate<0,50,0> }
  1009. }
  1010. #declare casa32=union{
  1011.     object {floor3 }
  1012.     object {escal51 translate<-75,0,-50> }
  1013.     object {floor4 translate<0,50,0> }
  1014.     object {tejado42 translate<0,100,0> }
  1015. }
  1016. #declare casa33=union{
  1017.     object {floor6 }
  1018.     object {floor1 translate<0,50,0> rotate y*180}
  1019.     object {tejado42 translate<0,100,0> }
  1020. }
  1021. #declare casa33a=union{
  1022.     object {casa33 }
  1023.     object {lateral1_1 translate <-50,0,-75>}
  1024.     object {lateral1_1 translate <0,0,-125> rotate y*-90}
  1025. }
  1026. #declare casa34=union{
  1027.     object {floor6 }
  1028.     object {floor2 translate<0,50,0> rotate y*180}
  1029.     object {floor2 translate<0,100,0> rotate y*180}
  1030.     object {tejado42 translate<0,150,0> }
  1031. }
  1032. #declare casa34a=union{
  1033.     object {casa34 }
  1034.     object {lateral1_2 translate <-50,0,-75>}
  1035. }
  1036. #declare casa34b=union{
  1037.     object {casa34a }
  1038.     object {lateral2_1 translate <0,0,-125> rotate y*-90}
  1039. }
  1040. #declare casa34c=union{
  1041.     object {casa34a }
  1042.     object {colgante3 translate <0,0,-125> rotate y*-90}
  1043. }
  1044. #declare casa35=union{
  1045.     object {floor1 }
  1046.     object {floor5 translate<0,50,0> }
  1047.     object {floor5 translate<0,100,0> rotate y*180}
  1048.     object {tejado42 translate<0,150,0> }
  1049. }
  1050. #declare casa35a=union{
  1051.     object {casa35 }
  1052.     object {colgante1 translate <25,0,-50>}
  1053.     object {lateral2_1 translate <0,0,-125> rotate y*-90}
  1054. }
  1055.  
  1056. //Seguidamente creamos secciones para un par de torres cuadradas de 5 y 10
  1057. //metros de lado, construidas ambas con paneles (Estas torres pueden usar
  1058. //los soportes de las estructuras colgantes)
  1059. //En primer lugar 4 secciones para torres de 5 metros
  1060. #declare secbpan51=union{       //seccion base (puerta en -Z)
  1061.     object{panel8 translate<0,0,-25>}   
  1062.     object{panel5 translate<0,0,-25> rotate y*180}   
  1063.     object{panel4 translate<0,0,-25> rotate y*90}
  1064.     object{panel3 translate<0,0,-25> rotate y*-90}
  1065. }
  1066. #declare secmpan51=union{       //seccion media sin ventanas
  1067.     object{panel1 translate<0,0,-25>}   
  1068.     object{panel1 translate<0,0,-25> rotate y*180}   
  1069.     object{panel4 translate<0,0,-25> rotate y*90}
  1070.     object{panel4 translate<0,0,-25> rotate y*-90}
  1071. }
  1072. #declare secmpan52=union{       //seccion media con 4 ventanas
  1073.     object{panel5 translate<0,0,-25>}   
  1074.     object{panel5 translate<0,0,-25> rotate y*180}   
  1075.     object{panel14 translate<0,0,-25> rotate y*90}
  1076.     object{panel14 translate<0,0,-25> rotate y*-90}
  1077. }
  1078. #declare secmpan53=union{       //seccion media con una ventana
  1079.     object{panel1 translate<0,0,-25>}   
  1080.     object{panel2 translate<0,0,-25> rotate y*180}   
  1081.     object{panel3 translate<0,0,-25> rotate y*90}
  1082.     object{panel14 translate<0,0,-25> rotate y*-90}
  1083. }
  1084. //tejado piramidal
  1085. #declare tejpir5=union{
  1086.     object{paneld1 translate<0,0,-25>}
  1087.     object{paneld1 translate<0,0,-25> rotate y*180}
  1088.     object{tejado1 }
  1089.     scale <1,1.30,1>
  1090. }    
  1091. //un ejemplo de torre (unos 12 metros de altura
  1092. #declare torpan5_1=union{
  1093.     object{secbpan51}
  1094.     object{secmpan52 translate<0,50,0>}
  1095.     object{secmpan51 translate<0,100,0> rotate y*90}
  1096.     object{tejpir5 translate<0,150,0>}
  1097. }    
  1098. #declare torpan5_2=union{
  1099.     object{secbpan51}
  1100.     object{secmpan51 translate<0,50,0>}
  1101.     object{secmpan52 translate<0,100,0>}
  1102.     object{secmpan53 translate<0,150,0>}
  1103.     object{tejpir5 translate<0,200,0>}
  1104. }    
  1105.  
  1106. // ahora 4 secciones para torres de 10 metros de lado
  1107. #declare secbpan101=union{  //seccion base (puertas en +X y +Z)
  1108.     object{tira4_a translate<0,0,-50>}
  1109.     object{tira6_a translate<0,0,-50> rotate y*90}   
  1110.     object{tira8_a translate<0,0,-50> rotate y*180}
  1111.     object{tira2_a translate<0,0,-50> rotate y*-90}
  1112. }
  1113. #declare secmpan101=union{       //2 lados sin ventanas y otro con
  1114.     object{tira9_a translate<0,0,-50>}
  1115.     object{tira9_a translate<0,0,-50> rotate y*90}
  1116.     object{tira7_a translate<0,0,-50> rotate y*-90}
  1117.     object{tira7_a translate<0,0,-50> rotate y*180}
  1118. }
  1119. #declare secmpan102=union{       //una sola ventana
  1120.     object{tira1_a translate<0,0,-50>}
  1121.     object{tira5_a translate<0,0,-50> rotate y*90}
  1122.     object{tira9_a translate<0,0,-50> rotate y*-90}
  1123.     object{tira2_a translate<0,0,-50> rotate y*180}
  1124. }
  1125. #declare secmpan103=union{       //un lado sin ventanas y otro con
  1126.     object{tira1_a translate<0,0,-50>}
  1127.     object{tira1_a translate<0,0,-50> rotate y*90}
  1128.     object{tira2_a translate<0,0,-50> rotate y*-90}
  1129.     object{tira2_a translate<0,0,-50> rotate y*180}
  1130. }
  1131. #declare tejpir10=union{
  1132.     object{tejado2 translate<-25,0,0>}
  1133.     object{tejado2 translate<25,0,0>}
  1134.     object{paneld6 rotate y*90 translate <-50,0,0>}
  1135.     object{paneld6 rotate y*-90 translate <50,0,0>}
  1136.     scale <1,1.30,1>
  1137. }
  1138. #declare torpan10_1=union{      //torre de 27 metros 
  1139.     object{secbpan101}
  1140.     object{secmpan101 translate<0,50,0>}
  1141.     object{secmpan103 translate<0,100,0>}
  1142.     object{secmpan101 translate<0,150,0>}
  1143.     object{tejpir10 translate<0,200,0>}
  1144.     object{torpan5_1 translate<0,0,-60>}
  1145.     object{torpan5_1 rotate y*90 translate<0,0,-50> rotate y*90}
  1146.     object{torpan5_1 rotate y*90 translate<0,0,-50> rotate y*-90}
  1147.     object{torpan5_1 translate<0,0,-60> rotate y*180}
  1148. }    
  1149. #declare torpan10_2=union{      //torre de 27 metros con colgantes 
  1150.     object{secbpan101}
  1151.     object{secmpan101 translate<0,50,0>}
  1152.     object{secmpan103 translate<0,100,0>}
  1153.     object{colgante1 translate<0,50,-50>}
  1154.     object{colgante2 translate<0,50,-50> rotate y*90}
  1155.     object{colgante2 translate<0,50,-50> rotate y*-90}
  1156.     object{colgante1 translate<0,50,-50> rotate y*180}
  1157.     object{secmpan101 translate<0,150,0>}
  1158.     object{tejpir10 translate<0,200,0>}
  1159. }    
  1160.  
  1161.